# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/9/25 0025 7:11
@Author : 测试开发工程师
@File : conftest.py
@Software: PyCharm
============================
"""

import pytest
import yaml


#  ==================================== 查看帮助信息 ： pytest --help ================================


# 收集完测试用例，之后被调用的hook函数
# =================== 修改编码格式（支持中文），pytest 默认编码格式为 unicode ============================
def pytest_collection_modifyitems(session, config, items) -> None:
    for item in items:
        # name : 测试用例的名字
        item.name = item.name.encode("utf-8").decode("unicode_escape")
        # nodeid :  测试用例的路径
        item._nodeid = item.nodeid.encode("utf-8").decode("unicode_escape")
    # 用例名称反转
    # items.reverse()


# ==========================   添加命令行参数(addoption)  =================================================
def pytest_addoption(parser):
    # 将下面所有的 option 都展示在这个 group 下
    mygroup = parser.getgroup('hogwarts')
    mygroup.addoption('--env',  # 注册一个命令行选项
                      default='test',  # 参数的默认值
                      dest='env',  # 存储的变量，为属性命令，可以使用 Option 对象访问到这个值，暂用不到
                      help='set your run env'  # 帮助提示，参数的描述信息
                      )
    mygroup.addoption('--env1',  # 注册一个命令行选项
                      default='test1',  # 参数的默认值
                      dest='env1',  # 存储的变量，为属性命令，可以使用 Option 对象访问到这个值，暂用不到
                      help='set your run env'  # 帮助提示，参数的描述信息
                      )


# 如何针对传入的不同参数完成不同的逻辑
@pytest.fixture(scope='session')
def cmdoption(request):
    return request.config.getoption('--env')


@pytest.fixture(scope='session')
def cmdoption(request):
    myenv = request.config.getoption('--env', default='test')
    if myenv == 'test':
        datapath = 'test/data.yaml'
    elif myenv == 'dev':
        datapath = 'dev/env.yaml'

    with open(datapath) as f:
        datas = yaml.safe_load(f)
    return myenv, datas
